/**
 * @purpose 领域提供者。与领域对象一一对象。
 * @author daizs
 * @created Mar 4, 2010
 */
package platform.common.dao;

import java.util.Map;

import platform.common.bo.IdentifiableObj;
import platform.common.dao.impl.DaoConfigException;



public interface IDomainProvider {
	 /**
	  * 获得领域对象类名
	  *
	  * @return 领域对象类名
	 */
	   public String getDomainClassName();
	   /**
		 * 设置领域对象类名
		 *
		 * @param domainClassName 领域对象类名
		 */
	   public void setDomainClassName(String domainClassName);
	   /**
		 * 获得领域对象类
		 *
		 * @return 领域对象类
		 * @throws DaoConfigException
		 */
	   public Class<? extends IdentifiableObj> getDomainClass()throws DaoConfigException;
	   /**
		 * 依据查询名称获得Hql字符串
		 *
		 * @param queryName 查询名称
		 * @return Hql字符串
		 * @throws DaoConfigException
		 */
       public String getHqlByQryName(String queryName)throws DaoConfigException;
       /**
		 * 实例化一个空的领域对象，即new一个领域Object。用于新建一个领域对象
		 *
		 * @return 领域对象
		 * @throws DaoConfigException
		 */
       public <T>T newEmptyObj()throws DaoConfigException;
	   /**
		 * 获取查询条件map
		 *
		 */
       public Map<String,Object> getQueryMap();
	   /**
		 * 设置查询条件map
		 *
		 * @param queryStr 查询字符串
		 */
   	   public void setQueryMap(Map<String,Object> queryMap);
       /**
		 * 实例化一个空的查询对象，基于xml和cglib动态生成查询bean象
		 *
		 * @return 查询对象
		 * @throws DaoConfigException
		 */
       public Object newQueryObj()throws DaoConfigException;

       public String getDynamicHqlByQryName(String queryName,Map<String,Object> dynamicMap) throws DaoConfigException;
}
